export default {
  methods: {
    judgeFirstpageHasDate(contents) {
      return !(!contents.length &&
        this.page === 1 &&
        this.groupIdArr.at(-1) === this.historyGroupId)
    },
    // 当最新的一个groupid的第一页没有数据，则需要显示初始化内容
    async showInitContent() {
      this.contents.unshift({
        componentName: 'AimeInitContent'
      });
      // 说明仍然有其他内容
      if (this.groupIdArr.length !== 1) {
        this.contents.unshift({ componentName: 'SplitLine' });
        await this.getNewGroupId();
      } else {
        this.isEnd = true;
      }
      this.scrollToBottom();
    },
    // 只有最新一条聊天的的第一页需要滚动到底部
    pageOneScrollToBottom() {
      if (
        this.page === 1 &&
        this.groupIdArr[this.groupIdArr.length - 1] === this.historyGroupId
      ) {
        this.scrollToBottom();
      }
    },
    // 处理获取历史消息之后页面的状态
    async dealContentsStatus(res) {
      if (this.contents.length < res.data.total) {
        this.page++;
      } else {
        // 到最后一页，判断当前是否是groupids的第一项，如果不是则需要加上分割线
        if (this.groupIdArr[0] === this.historyGroupId) {
          this.isEnd = true;
        } else {
          this.contents.unshift({ componentName: 'SplitLine' });
          await this.getNewGroupId();
        }
      }
    },
    // 渲染完成之后处理试图信息
    handlePostRender(isFirst, lastScrollTop, lastScrollHeight) {
      // 使用settimeout，解决低端机型渲染慢的问题
      setTimeout(() => {
        if (isFirst) {
          this.scrollToBottom();
          const contentsDom = this.$refs.contents;
          // 首次加载无滚动条出现
          if (
            contentsDom &&
            contentsDom.scrollHeight <= contentsDom.offsetHeight &&
            !this.isEnd
          ) {
            this.getHistory(true);
          }
        } else if (this.$refs.contents) {
          this.$refs.contents.scrollTop =
            lastScrollTop + (this.$refs.contents.scrollHeight - lastScrollHeight);
        }
      });
    },
  }
}

